/**
 * 
 */
package org.lora.webframework.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.lora.util.StringUtil;

/**
 * <p>
 * 类名:MD5Util
 * </p>
 * 描述:MD5加密工具类<br>
 * 创建时间:2016年9月21日 上午10:00:04<br>
 * 
 * @author Bladnir@outlook.com<br>
 *         修改历史:<br>
 *         2016年9月21日 Bladnir 创建<br>
 */
public class MD5Util {

	/**
	 * 构造方法
	 */
	private MD5Util() {
		// so nothing
	}

	/**
	 * MD5加密
	 * 
	 * @param plainText
	 *            原文
	 * @return 密文
	 */
	public static String encrypt(String plainText) throws NoSuchAlgorithmException {
		// 首先判断是否为空
		if (StringUtil.isNull(plainText)) {
			return null;
		}
		// 首先进行实例化和初始化
		MessageDigest md = MessageDigest.getInstance("MD5");
		// 得到一个操作系统默认的字节编码格式的字节数组
		byte[] btInput = plainText.getBytes();
		// 对得到的字节数组进行处理
		md.update(btInput);
		// 进行哈希计算并返回结果
		byte[] btResult = md.digest();
		// 进行哈希计算后得到的数据的长度
		StringBuilder sb = new StringBuilder();
		for (byte b : btResult) {
			int bt = b & 0xff;
			if (bt < 16) {
				sb.append(0);
			}
			sb.append(Integer.toHexString(bt));
		}
		return sb.toString();
	}

}
